iT邦幫忙

2021 iThome 鐵人賽

DAY 4
1
永豐金融APIs

菜鳥工程師想用C#做出金流微服務是否搞錯了什麼?系列 第 4

[Day 04] C#輕鬆取得IV值&實作SHA256 - [C#]豐收款API必備前置作業(三)

  • 分享至 

  • xImage
  •  

先來複習一下:
https://ithelp.ithome.com.tw/upload/images/20210918/20131205Mrjlv5ho4d.png
昨天做的是取得Nonce及HashID的部分,今天就來講要怎麼算IV值吧!


既然順利拿到了Nonce值後,就可以繼續加工來產出IV值,有點懶所以直接引用Spec原文:

產出 IV 值前必須要先行取得 Nonce 後才能產生,計算方式是將取得的 Nonce 值作 SHA256 加密後,再將英文轉換成大寫取字串右邊 16 碼長度

C#有提供許多原生的方法來實踐SHA256的運算(其實這邊應該是指雜湊,官方上不知為何是寫加密,兩個其實是不一樣的,打算之後再來補充)


因為方法實在太五花八門了,不過概念是雷同的,這邊使用.Net Core作為範例:

首先要引用這個命名空間:

using System.Security.Cryptography;

再來,打包成method,將來實作上會更為方便

  public static string Get_SHA256_Hash( string value )
{
  using var hash = SHA256.Create();
  var byteArray = hash.ComputeHash( Encoding.UTF8.GetBytes( value ) );
  return Convert.ToHexString( byteArray ).ToLower();
}

取得回傳值後,記得必須再用 ToUpper() 來確保轉換完的字串都是大寫喔
最後,右邊16碼長度怎麼拿呢?這真的是個超直覺的方法XD

string result = input.Right(16);

就完成拉~是不是很簡單呀?(不過整個流程概念還是挺複雜的啦..

最後結果的IV值應該會像醬"CB6FA68E42B655AB"

明天會繼續介紹如何用C#用AES CBC來無腦產生加密的內文訊息,See you!


上一篇
[Day 03]取得Nonce與HashID以產出Sign - [C#]豐收款API必備前置作業(二)
下一篇
[Day 05] 產出回應內文&初探AES CBC加密 - [C#]豐收款API必備前置作業(四)
系列文
菜鳥工程師想用C#做出金流微服務是否搞錯了什麼?15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言